package com.gccloud.design.service;

import com.gccloud.design.dto.LinkParticipantConfigDto;
import com.gccloud.starter.core.vo.PageVO;

import java.util.List;
import java.util.Map;

/**
 * 实现功能【环节参与人配置业务层】
 *
 * @author hu.hongdou
 * @date 2022/2/21
 */
public interface LinkParticipantConfigService {

    /**
     * @param repoId  环节实例ID
     * @param pageObj 分页对象
     * @return Map<String, Object>
     * @describe 基于环节实例ID分页查询环节参与者
     */
    Map<String, Object> getParticipantByRepoId(String repoId, PageVO pageObj);

    /**
     * @param linkParticipantConfigDto 环节参与者实体
     * @return true/false
     * @describe 修改环节参与者
     */
    boolean updateParticipant(LinkParticipantConfigDto linkParticipantConfigDto);

    /**
     * @param participantConfId 环节参与者ID
     * @return true/false
     * @describe 基于环节参与者ID删除环节参与者
     */
    boolean removeParticipantConfByParticipantConfId(Integer participantConfId);

    /**
     * @param participantOrgId 环节参与者机构ID
     * @param participantId    环节参与者ID
     * @param repoId           环节实例ID
     * @param pageObj          分页对象
     * @return Map<String, Object>
     * @describe 基于环节参与者机构ID、环节参与者ID、环节实例ID分页查询环节参与者
     */
    Map<String, Object> queryParticipantLists(String participantOrgId, String participantId, String repoId, PageVO pageObj);

    /**
     * @param linkParticipantConfigDtoList 环节参与者实体的List
     * @return true/false
     * @describe 保存环节参与者
     */
    boolean saveParticipant(List<LinkParticipantConfigDto> linkParticipantConfigDtoList);

    /**
     * @param orgId   机构ID
     * @param repoId  环节实例ID
     * @param orgName 机构名
     * @param pageObj 分页对象
     * @return Map<String, Object>
     * @describe 基于机构ID、环节实例ID、机构名分页查询机构
     */
    Map<String, Object> getOrg(String orgId, String repoId, String orgName, PageVO pageObj);

    /**
     * @param roleName 角色名称
     * @param roleCode 角色编码
     * @param repoId   环节实例ID
     * @param pageObj  分页对象
     * @return Map<String, Object>
     * @describe 基于角色名称、角色编码、环节实例ID分页查询角色信息
     */
    Map<String, Object> getRole(String roleName, String roleCode, String repoId, PageVO pageObj);
}
